package Method;
use Moose;

has 'method' => ( is => 'rw' );

before 'call' => sub { print "  1 before call method modify\n"; };
before 'call' => sub { print "2 before call method modify\n"; };

around 'call' => sub {
	my $orig = shift;
	my $self = shift;
	
	print "    this in call method\n";
	$self->$orig();
	print "    call run finish \n";
};

after 'call' => sub {
	print "1 after run method modifier\n";
};
after 'call' => sub {
	print "    2 after run method modifier\n";
};
sub call {
	print "this a primary call method\n";
}

1;

my $o = Method->new( method => 'call' );
$o->call;